<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

</body>
<script>
  function doSomeThing() {
    // 函数在没有执行之前 都是以文本的形式 存储在函数名(变量)
    // var sing = function(){
    //     console.log("唱歌");
    // }
    // function sing(){
    //     console.log("唱歌");
    // }
    // function dance(){
    //     console.log("跳舞");
    // }
    // function play(){
    //     console.log("打篮球");
    // }
    // sing()
    // dance()
    // play();
  }

  // doSomeThing();


  // function add(a,b){
  //     // var a = 1;
  //     // var b = 2;
  //     return a+b;
  // }
  // add(1,2);

  // 提前定义好的函数
  function sing() {
    console.log("唱歌");
  }
  function dance() {
    console.log("跳舞");
  }
  function play() {
    console.log("打篮球");
  }


  // 
  function doSomeThing(fn) {  //fn形式参数(变量)  接收外部传入的函数  => 调用了函数

    // 函数在没有执行之前 都是以文本的形式 存储在函数名(变量)
    // var fn = function(){
    //     console.log("唱歌");
    // }
    console.log("fn接收的函数", fn);

    fn();  //调用
  }

  // 把一个函数当成参数 传递到 另一个函数中 用法 => 回调函数 
  doSomeThing(sing);   // sing 调用过程中传入的实际参数
  doSomeThing(dance);
  doSomeThing(play);
  doSomeThing(function () {
    console.log("打豆豆");
  });






</script>
<script>
  function sing() {
    console.log('唱歌');
  }
  function dance() {
    console.log('跳舞');
  }
  function play() {
    console.log('打篮球');
  }

  function doOneThing(fn) {
    fn();
  }
  doOneThing(play);

  function doOneThing(fn) {
    fn();
  }
  doOneThing(dance);
  doOneThing(sing);


</script>

</html>